\chapter{Introduction}
\label{cap:introduction}
\section{Purpose}
%
%//TODO qui va scritto a quale pubblico ?rivolto SRS (Software Requiriments %Specification) e qual'?il suo scopo
The purpose of this document is to point out system requirements inherently with customer's ones, in order to implement the whole system with the least possible effort. By doing this we expect to prevent possible design errors, which are in our opinion the most critical for the whole project development.
This document's intended audience includes the developers of the 
SWIM network, as well as the stakeholders and interested parties in such social network
%% avvocati,  leggi frocio! 
\section{Scope}
We are about to develop a software consisting in a web application called SWIMv2-swKnigths. This web application is suppose to be a server accessible by the most common internet browser (chrome, firefox \ldots). The server will be prepared to be interfaced with a possible future client application. \newline
SWIMv2-swKnigths is thought to help people to find and give support and help in a small network of friends in the fastest, cheapest and smartest way possible. 
\section{Definitions, acronyms, and abbreviations}
\textbf{\emph{Abilities}}: Set of words identify what people can do.
\newline
An Example of abilities could be:
\begin{itemize}
  \item plumber
  \item computer expert
  \item cooker
  \item snowplow \ldots 
\end{itemize}

\textbf{\emph{Admin}}: User with special permits; look at requirements.
\vspace{5.0mm}

\textbf{\emph{Friend}}: Registered user friendship request has been sent and accepted.
\vspace{5.0mm}

\textbf{\emph{Direct friend}}: Friend added directly from the research tool. He has not been added by using friends advising tool.
\vspace{5.0mm}

\textbf{\emph{Undirect friend}}: Friend added by using friends advising tool.
\vspace{5.0mm}

\textbf{\emph{Friends advising tool}}: Suggest which friend you could add. This tool looks for friends into your direct friends.
\vspace{5.0mm}

\textbf{\emph{Help}}: Request for a performance or a service from other registered users.
\vspace{5.0mm}

\textbf{\emph{Ban}}: Action inhibits users to access the service for a finite or undefined period of time. Ban is applied for unfair behavior.
\vspace{5.0mm}

\textbf{\emph{Unfair behavior}}: Keep a rude behavior by using the application, for instance by typing contents like:
\begin{itemize}
  \item racist
  \item blasphemous
  \item child pornography
  \item rude words \ldots
\end{itemize}

\noindent
\textbf{\emph{Guest}}: User navigating the site without being logged in. Guest user and unregistered user represent the same thing.
\vspace{5.0mm}

\textbf{\emph{Private Message (PM)}}: Message sent to a registered users. Only these two users can read the message: the one who sent it and the one who received it. Only a registered user can receive PM.
\vspace{5.0mm}

\textbf{\emph{Help Request}}: Special Case of Private Message in that the user formally asks for help.
\vspace{5.0mm}

\textbf{\emph{Registration}}: It consists in providing a valid email address, a valid username (unique in the whole system) and a password, different from username, containing at least eight character and a number. Password must be different from the user name.
\vspace{5.0mm}

\textbf{\emph{Registered user}}: User who succeed in the registration phase.
\vspace{5.0mm}

\textbf{\emph{Logged user}}: Registered user who has logged in.
\vspace{5.0mm}

\textbf{\emph{Bot}}: Non Human user which use the site for undefined scopes, not necessarily inherent to the system ones.
\vspace{5.0mm}

\textbf{\emph{Account deleting}}: Action used by an user to delete his personal data from the system. This operation implies that the user became an unregistered one.
\vspace{5.0mm}

\textbf{\emph{Privacy settings}}: rules defining which data are public or are not.
\section{Overview}
We try to develop this documentation by following IEEE830-1998 standard which is about how SRS (Software Requirements Specification) documents should be paginated; SRS could also be called, as we do, RASD. Since many of the standard section were redundant or not accordant with the kind of project we're developing, we couldn't literally follow it.
Further this introduction part, the document has two more section. The former is about to describe in a high level the software, its base functionalities, user characteristics, use cases and user and software interfaces of the application.
The latter treat more in details both the use cases, organized by a function hierarchy (first base functions, then complex functions and in the end system handling complex functions), and non-functional requirements software must have in order to respect some quality standards.
At the end of the document we inserted an appendix where we show how requirements map on the instances of the single state system.
In the appendix there're are attached a class-diagram of the system and a formal specification written with a formal verification language Alloy.
\begin{comment}
Il documento ?stato organizzato cercando di seguire lo standard IEEE830-1998, che tratta di come dovrebbero essere impaginati i documenti di SRS (Software Requirements Specification), da noi nominato, in maniera equivalente, RASD. Non ?stato possibile seguire alla lettera lo standard, vsto che molte delle sezioni in esso specificate erano ridondandi o non inerenti al tipo di progetto che stiamo svolgendo.
Il documento, oltre alla seguente parte introduttiva ?organizzato in altre due parti, la prima delle quali si occupa di descrivere ad alto livello il software, le sue funzionalit?/span> di base, le caratteristiche degli utenti, i casi d'uso e l'interfaccia utente e software dell'applicazione. L'ultima parte invece tratta nel dettaglio sia gli specifici casi d'uso, organizzati secondo la gerarchia di funzioni (prima le funzioni base, poi quelle complesse e infine le funzioni avanzate di gestione del sistema), sia i requisiti nonfunzionali che il software deve avere per rispettare alcuni standard di qualit?/span>. Infine vi ?un'appendice in cui, utilizzando il linguaggio di verifica formale Alloy, e partendo da una descrizione abbozzata fatta con un diagramma delle classi del sistema, mostriamo come i requisiti si mappano sulle istanze dei singoli stati del sistema.  %%%soooka
\end{comment}
